import java.util.Scanner;

/**
 * Created by L.jp
 * Description:小红定义一个数组为"好数组”，当且仅当该数组满足以下条件
 *
 * 1.数组仅由0、1、2三种元素组成
 *
 * 2.数组相邻的元素不相等。
 *
 * 例如:121.2.0.1是好数组。小红定义一个数组的“陡峭值"”为该数组相邻元素的差的绝对值之和。例如，[2,1,2,0,1]的陡峭值为|2-1|+|1-2|+|2-0|+|0-1| = 5.
 * 小红想知道，长度为n的所有好数组的陡峭值之和是多少? 由于答案过大，请对10^9+7取模，数据汇围:2<=n<=10^9
 *
 * 示例1
 *
 * 输入
 *
 * 2
 * 输出
 *
 * 8
 * 说明
 *
 * 共有[0,1],[1,0],[0,2],[2,0],[1,2],[2,1]这六个好数组。陡峭值之和为1+1+2+2+1+1=8
 * User: 86189
 * Date: 2023-04-13
 * Time: 20:25
 */

/*思路：观察法(虽然很扯,确实是这样) 递推式: (n-1)*2^(n+1) {n>=2} 再通过快速幂求解(类型为 long)
  注意：int类型最大值约等于 5*10^9  注意base，power也要用 long类型
  
   什么是快速幂： 快速幂就是用来解决快速 求大幂的解法 比如：2^1000000000000
    公式：(A*B)%C = (A%C*B%C)%C (加法和加法同样适用)
    关键点: 我们平常求幂都是通过 将A循环n次,这样效率太低,我们可以用二分的思想 如：3^10 = (3*3)^5
    例子 :  3^10 = (3*3)^5   5无法平分 将其拆分成 4+1  原式= (3*3)^4 * (3*3)
           原式=(9*9)^2 * 9 = (81*81) * 9 = 6561 * 9

*/
public class Solution {
    public static final int MOD = 1000000007;
    //递归快速幂
   /* public static long fastPow(long BaseNumber, long index) {
        if(index==0){
            return 1;
        }else if(index%2==1){
            //如果指数为奇数，那么就是指数减1,
            return fastPow(BaseNumber,index-1)*BaseNumber;
        }else {
            long temp=fastPow(BaseNumber,index/2);
            return temp*temp;
        }
    }*/
    
    public static long fastPow(long BaseNumber, long index) {
        int res=1;
        while (index>0){
            if((index&1)==1){
                res*=BaseNumber;
            }
            BaseNumber*=BaseNumber;
            index>>=1;
        }
        return res;
    }
    
    public static int fun(int n) {
        return (int)((long)(n-1)*fastPow(2, n+1)) % MOD;
    }
    
    public static void main(String[] args) {
        System.out.println(fun(3));
    
    }
}
